1. Field of the Invention
The present invention relates in general to the field of program testing. In one aspect, the present invention relates to a system and method for testing multimedia applications, such as Macromedia Flash applications.
2. Description of the Related Art
In recent years, multimedia works containing different types of “media” content (such as text, sound, video, still and animated graphics, etc.) have been used to deliver information to viewers via televisions, computers or computer networks, such as the Internet. FIG. 1 illustrates an Internet-based system for distributing multimedia works using server-deployed software that enables developers to easily and economically create network-aware applications with rich, interactive user-interfaces. In the illustration, the application server 10 includes a browser 12 with a player 13 and an authoring program 11 for creating object code of a given multimedia work. The object code may be sent to a client for playback at a remote user interface, such as on the player 16 at the client browser 15. Communication between the various elements can be via network, dedicated connection, wireless connection, or any other connection that is suitable for appropriate communication. At the remote client 15, a player 16 is provided as a software environment, hardware, or a set of one or more software programs, etc. that can display graphics and play sound.
An example of a multimedia authoring program and player for creating and playing multimedia works is the Macromedia Flash suite of programs. (“Flash” and “Macromedia Flash” are registered trademarks of Adobe Systems, Inc.) Flash is an interactive alternative to traditional graphical user interface (GUI) technologies, such as HyperText Markup Language (HTML). In contrast to HTML, which employs a static page-based model, Flash can support dynamic graphical interfaces that programmatically change on the fly. In addition, Flash applications are stateful, networked programs that support a rich programming environment. Strictly speaking, Macromedia Flash is the authoring environment, and Flash Player is the program used to run the Shockwave Flash (SWF) files or applications, but the term “Flash” is sometimes used interchangeably to refer to the authoring environment, the player or the application files.
With Flash applications or movies, the authoring tool 11, such as Flash MX 2004 Interactive Development Environment (IDE), uses vector and raster graphics, a scripting language called ActionScript and bidirectional streaming of video and audio to generate Flash files (or “movies”) as a compressed stream of bytecodes (a SWF file). Nearly all complex Flash applications are written entirely as ActionScript programs with minimal use of the IDE, other than for compilation. Macromedia Flash applications are typically created using an IDE, such as Macromedia Corporation's Flash MX2004, although the SWF file format is an open standard and other means of creating such files exist. Flash applications may include images, sound, video, user interface components and other program code or data. Flash program code is written in the ActionScript language, which supports object-oriented programming (OOP), exceptions, events, and has a native user interface component library. A Flash application is deployed from an application server 10 as a SWF file 17 that is referenced from web pages (e.g., at client 15) through the use of <object> or <embed> tags that are interpreted by a browser plugin. The browser 15 interprets these tags to start up the Flash player 16, which loads the SWF file 17 and begins execution. The tag determines the height and width of the region on the page in which the Flash player 16 will have control. The Flash player 16 handles all user interface (UI) events that occur over this region (such as mouse movements or click or key presses) and exercises total graphical control over the pixels specified.
When creating a multimedia work, testing is required to assess the work for performance, functionality and playback. Traditionally, Flash applications have been tested by hand. This involves human interaction with the application, usually following a planned test script, and the manual recording of errors. This process can be error-prone, unreliable, time-consuming, and/or expensive. While automated test frameworks do exist, they primarily support only unit tests written in ActionScript, the Flash programming language. Such ActionScript-based test frameworks suffer from a number of disadvantages. First, ActionScript code cannot generate native user interface (UI) events, such as mouse movement, clicks, and keyboard events or other events generated and handled at the host operating system level. In addition, because current implementations of the Flash player present a single-threaded execution environment to ActionScript code when running as a browser plugin, an ActionScript test script cannot run in concert with an executing Flash application, which means that the Flash application cannot make progress while a block of test code is executing. Another drawback with ActionScript tests is that the ActionScript language cannot access the actual graphical output of the Flash player for verification, which means that such tests cannot be considered true end-to-end tests for a Flash application. In addition, ActionScript tests cannot be integrated into existing web testing frameworks without significant extra work, which requires that separate test suites for Flash and HTML be maintained rather than testing a website as an integrated whole. Moreover, a web page containing two or more separate Flash movies cannot be effectively tested with a test script written in ActionScript, since it must execute in one and only one Flash player at a time. Finally, ActionScript does not provide a large and feature-rich language that more sophisticated systems programming languages (such as Java) support. (“Java” is a trademark of Sun Microsystems, Inc.) These libraries can be useful when writing sophisticated tests of an application.
As seen from the foregoing, a need exists for an improved automated testing framework for testing multimedia works, such as Flash applications. Conventional testing approaches suffer from the numerous drawbacks and limitations or are otherwise ineffective, as explained hereinabove. Further limitations and disadvantages of conventional systems will become apparent to one of skill in the art after reviewing the remainder of the present application with reference to the drawings and detailed description which follow.